Managing user interface control panels

ABSTRACT

A computer-implemented method includes displaying a user interface on a display device, the user interface displaying a content item, in response to receiving input, displaying a user interface control panel including a user interface control, the user interface control configured to enable modifying one or more attributes of the content item, and in response to detecting a first selection of the user interface control, displaying a portion of the user interface control panel and hiding a portion of the user interface control panel, the displayed portion of the user interface control panel including the user interface control.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation application of U.S. Ser. No.12/050,114, filed on Mar. 17, 2008, now U.S. Pat. No. 8,185,843 which ishereby incorporated by reference in its entirety.

TECHNICAL FIELD

The present disclosure relates to managing user interfaces of softwareapplications.

BACKGROUND

Software applications can edit content items such as images, video,audio, documents, and the like. Content items, such as images, can becaptured using devices such as digital cameras, stored as images files,e.g., in JPG format, and transferred to storage devices. A softwareapplication can retrieve an image file stored in a storage device anddisplay the image file on a display device of a computer system. Theimages can have one or more attributes, e.g., sharpness, brightness,color, and the like, and each attribute can be assigned a value. Userscan edit the appearance of an image by altering the attribute values ofthe corresponding image using user interface controls offered by asoftware application.

SUMMARY

This specification describes technologies relating to managing userinterface control panels. In one example, an image is displayed in auser interface of a software application. In response to user input, auser interface control panel configured to enable modifying theattributes of the image is displayed in the user interface, e.g., overthe image. The control panel includes features, e.g., one or moresliders that can be moved using an input device such as a mouse, toalter the attributes of the image in the user interface. When a userselects a slider in the control panel, all portions of the controlpanel, except the slider are hidden from display. When the user releasesthe slider, the hidden portions of the control panel are re-displayed.Further, when the user positions the cursor at a location in the userinterface, away from the slider, and selects the location, the sliderautomatically moves to the selected location. Furthermore, in responseto another input from the user, the control panel is hidden fromdisplay.

In general, one aspect of the subject matter described in thisspecification can be implemented in methods that include displaying auser interface on a display device, the user interface displaying acontent item, in response to receiving input, displaying a userinterface control panel including a user interface control, the userinterface control configured to enable modifying one or more attributesof the content item, and in response to detecting a first selection ofthe user interface control, displaying a portion of the user interfacecontrol panel and hiding a portion of the user interface control panel,the displayed portion of the user interface control panel including theuser interface control. Other implementations of this aspect includecorresponding systems, apparatus, and computer program products.

This, and other aspects, can include one or more of the followingfeatures. The method can further include re-displaying the hiddenportion of the user interface control panel on the display device inresponse to detecting an end of the first selection. The content itemcan be an image and the attributes of the image that the user interfacecontrol is configured to enable modifying can include a sharpness, asaturation, a hue, a brightness, and a color. The method can furtherinclude hiding all of the user interface control panel in response toreceiving new input. The first selection can be active between detectingthe first selection and detecting an end of the first selection. Themethod can further include detecting a selection of a location withinthe user interface when the first selection is active, and automaticallymoving the displayed portion of the user interface control panel to theselected location. The input can include selection of a key on akeyboard. The first selection can include selection of the userinterface control using a cursor controlled by a pointing device.Detecting the first selection can include detecting a combination of akeystroke and an operation on the cursor. The method can further includedisplaying only the content item and the user interface control on thedisplay device, and in response to detecting an end of the firstselection, displaying the user interface and the user interface controlpanel. The method can further include detecting a location of a cursoron the display device, and in response to receiving the input,displaying the user interface control panel at the location of thecursor. The method can further include in response to detecting an endof the first selection, automatically hiding the user interface controlpanel.

Particular implementations of the subject matter described in thisspecification can be implemented to realize one or more of the followingpotential advantages. Hiding portions of the user interface controlpanel that are not being used by a user to alter image attributesreduces screen clutter and allows a user to view more portions of theimage that the user is editing. Moving the user interface control basedon cursor location can allow a user to move the control away fromregions of interest in the image. Enabling a user to control the userinterface control panel in response to selections of locations on theuser interface decreases a number of inputs that the user has to provideto display and hide the control panel.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features,aspects, and advantages will become apparent from the description, thedrawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic of an example of a system for editing content.

FIGS. 2A and 2B are schematics of examples of a user interface of asoftware application for editing content.

FIGS. 3A-3D are schematics of examples of user interfaces including userinterface control panels.

FIG. 4 is a flow diagram of an example of a process for managing userinterface control panels.

FIGS. 5A-5D are schematics of examples of user interfaces displayinguser interface control panels at cursor locations.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

FIG. 1 depicts a schematic of an example of a system 100 for editingcontent. The system 100 can be any computer system such as a desktopcomputer, laptop computer, personal digital assistant (PDA), and thelike. The system 100 includes a display device 105 operatively coupledto a processing unit 110. In addition, the system 100 includes inputdevices, such as a keyboard 115 and a pointing device 120, e.g., amouse, a stylus, and the like, operatively coupled to the processingunit 110. A user can provide input using the keyboard 115 and thepointing device 120, and can view the outcome of the input on thedisplay device 105.

The processing unit 110 is configured to receive a computer programproduct, e.g., a CD-ROM, tangibly embodied in a computer-readablemedium, including instructions to perform operations. For example, theprocessing unit 110 can include a CD-ROM drive to receive the computerprogram product, e.g., a CD. The CD can be an installation disk thatincludes instructions corresponding to a software application thatenables editing and management of content, e.g., images, video, audio,documents, and the like. The instructions in the computer programproduct cause the processing unit 110 to provide a user with a userinterface 125 that allows the user to edit and manage content, e.g.,images. In some implementations, the images are stored in storage media,e.g., a hard disk, operatively coupled to the processing unit 110. Toenable a user to edit and manage content, the user interface 125 isdisplayed on the display device 105.

In some implementations, upon installing the instructions in theprocessing unit 110, an icon corresponding to the software applicationis displayed on the display device 105. In response to a user selectingthe icon, e.g., using the pointing device 120, the user interface 125 isdisplayed on the display device 105. Alternatively, a selectable objectcorresponding to the software application can be selected from a menu ofselectable objects. The user interface 125 includes several menu items130, e.g., Menu 1, Menu 2, Menu 3, Menu 4, where each menu item 130includes one or more selectable objects. The selectable objects can beconfigured to cause the processing unit 110 to perform differentoperations on content items including opening operations for display andediting, editing operations, storing operations, and the like. In someimplementations, a cursor 135 controlled by the pointing device 120 canbe displayed on the display device 105. A menu item 130 can be selectedby positioning the cursor 135 over a menu item 130 and selecting themenu item 130. Selecting the menu item 130 can cause a menu ofselectable objects to be displayed, where each selectable objectcorresponds to an operation. The cursor 130 can be positioned on aselectable object and the object can be selected to cause the processingunit 110 to perform the corresponding operation.

Alternatively, and in addition, the keyboard 115 can be used to accessthe menu items 130. One or more keys on the keyboard 115 can beconfigured such that, in response to a keystroke, the selectable objectsof a menu item 130 are displayed. A user can navigate the selectableobjects displayed in a menu item 130 using additional keys, e.g., arrowkeys, on the keyboard 115 and select an object, e.g., using the “Enter”key on the keyboard 115. In some implementations, the menu items 130 canbe accessed using a combination of keys on the keyboard 115 and thecursor 135.

Selecting an object in the menu item 130 can cause the processing unit110 to display a user interface control panel in the user interface 125.The user interface control panel can include one or more user interfacecontrols that can be selected to edit content. In some implementations,to display the user interface control panel, the user first selects amenu item 130 that causes a list of selectable objects in the menu item130 to be displayed in the user interface 125. Subsequently, the userselects an object in the menu item 130 that causes a corresponding userinterface control panel to be displayed in the user interface 125. Inother implementations, a key or a combination of keys on the keyboard115 can be configured to cause the display of a user interface controlpanel corresponding to an object in the menu item 130. In suchimplementations, when the user selects the key or combination of keyscorresponding to a user interface control panel, the panel isautomatically displayed in the user interface 125. The instructions inthe computer program product can include default keys and/or keycombinations corresponding to user interface control panels.Alternatively, or in addition, a user can configure keys and/or keycombinations to correspond to user interface control panels.

A content item, e.g., an image 140, is displayed in the user interface125 in response to user input. For example, the user can access astorage device, including content items 140, operatively coupled to theprocessing unit 110, and select an image 140 that is stored in thestorage device. In response, the image 140 can be displayed in the userinterface 125. To alter the attributes of the image 140, the userselects objects in the menu items 130 causing the user interface controlpanels to be displayed. The user can use the user interface controls inthe user interface control panels to modify the attributes of the image140.

FIGS. 2A and 2B are schematics of examples of a user interface 125 of asoftware application for editing content, e.g., images, video, and thelike. In FIG. 2A, the user interface 125 is displayed on a displaydevice 105 in response to receiving input from a user. An object in oneof the menu items 130 in the user interface 125 is configured to enablea user to access content located in storage devices operatively coupledto the processing unit 110. For example, the user can position thecursor 135 on the menu item 130 that includes the object and select theobject. In response, a selection panel displaying one or more storagedevices operatively coupled to the processing unit 110 is displayed onthe display device 105. Alternatively, the user can select one or morekeys on the keyboard 115 that are configured to display the selectionpanel when selected. The user can navigate the storage devices using thecursor 135 or keys on the keyboard 115 or both to locate the image 140.Subsequently, the user can select the image 140 and, in response to theselection, the image is displayed in the user interface 125.

The user may wish to alter one or more attributes of the image 140displayed in the user interface 125. The attributes can include a color,a sharpness, a brightness, a hue, a saturation, an exposure, whitebalance, effects, such as vignette, and the like. The softwareapplication includes a user interface control panel 200 that includesuser interface controls 205, 210, 215, 220, 225, to enable a user tomodify the attributes of the image 140. Each user interface control isbounded by a corresponding user interface control area. The userinterface control panel 200 is displayed in the user interface 125 inresponse to user input. In some implementations, a key and/or a keycombination on the keyboard 115 can be configured such that in responseto a keystroke where the key is selected, the user interface controlpanel 200 is displayed in the user interface 125. Alternatively, or inaddition, the user interface control panel 200 can be accessed byselecting an object in a menu item 130 using the cursor 135. In otherexamples, icons corresponding to the control panel 200, can be displayedin the user interface 125. The control panel 200 can be displayed inresponse to selecting the icon using the cursor 135. The softwareapplication can include several user interface control panels that auser can select for displaying using the keyboard 115, the pointingdevice 120, or both.

The control panel 200 can be of different sizes and shapes depending, inpart, upon the number of user interface controls in the control panel200. In some implementations, the control panel 200 is bounded by acontrol panel area that can be, e.g., substantially rectangular and canlie within the user interface 125. The control panel 200 can includetabbed portions that enable including several user interface controls inthe same control panel 200 without increasing the control panel area.Alternatively, and in addition, the control panel 200 can includeselectable objects, the selection of which can expand or shrink thecontrol panel 200, thereby increasing or decreasing, respectively, thecontrol panel area. All or portions of the control panel area can lieover the image 140, thereby covering a portion of the image 140. Thecontrol panel 200 can be moved to any location in the user interface125. For example, a user can position the cursor 135 operated by a mouseover the control panel 200, select a button on the mouse, drag thecontrol panel 200 to a location on the user interface 125 and releasethe mouse button.

The user interface controls 205, 210, 215, 220, and 225 can, each,correspond to an attribute of the image 140 that can be altered. Forexample, user interface control 205 can correspond to the contrastattribute, user interface control 210 can correspond to the saturationattribute, and the like. In some implementations, the user interfacecontrols 205, 210, 215, 220, and 225 can, each, be displayed as a sliderincluding a button within an area bound by the slider. The position ofthe button within each slider can correspond to a level of the attributecorresponding to the user interface control. For example, user interfacecontrol 215 can correspond to the brightness attribute that can beassigned a value between 0 and 99. The slider corresponding to thecontrol 215 can be configured such that the left end and the right endof the slider correspond to brightness values of 0 and 99, respectively.Positioning the button of the slider between the left and right ends ofthe slider can correspond to a value between 0 and 99.

Further, the software application can be configured such that as theuser moves the slider of the control 215 between the left and the rightends, the image 140 is automatically updated to display an effect ofchanging the attribute value. In some implementations, a text field (notshown) can be displayed adjacent to each slider and can be configured todisplay a value corresponding to the position of the button in theslider corresponding to the control. For example, if the button ispositioned at the left end of the slider, the text field displays 0, andif the button is positioned at the right end of the slider, the textfield displays 99. In some implementations, a user can enter a value foran attribute into the text field. In response to receiving the value,the position of the button in the slider can be automatically altered tomatch the attribute value. In some implementations, the user interfacecontrol panel 200 can include additional information that corresponds toeach user interface control in the control panel 200. For example, aslider in the control panel 200 can include a graphical displayindicating a plot of the attribute value that the slider is used tomodify. When the button in the slider is moved, the graphical displaycan be updated. Each control in the control panel can includecorresponding additional information. In this manner, the user can useeither sliders on the controls or the text field corresponding to thesliders to change attributes of the image 140.

In some implementations, when the user positions the cursor 135 on theslider 215 and changes the position of the button in the slider, userinterface control panel including the controls is displayed in the userinterface 125. For example, a control area which is the area boundingthe user interface control 215 and a control panel area, which is thearea bounding each control, can be displayed in the user interface 125.The control panel area may be located over the image 140 preventing theuser from viewing the effect of changing the image attribute in the areabeneath the control panel area. In some implementations, the user canmove the control panel area to a separate location within the userinterface 125.

In some implementations, the user can select, e.g., a key on thekeyboard 115 and subsequently select the slider of the control 215. Asillustrated in FIG. 2B, in response, a portion of the user interfacecontrol is hidden from display and a portion of the user interfacecontrol panel is displayed. The displayed portion of the user interfacecontrol panel includes the selected control 215. For example, allportions of the user interface control panel 200, except for the userinterface control 215, are hidden from display. In implementations wherethe user interface control includes additional information, thedisplayed portions can include the user interface control and theadditional information. The user can change the position of the buttonin the slider corresponding to the control 215 to change the attributeof the image 140. The image 140 can be automatically updated as theposition of the button in the slider is changed to display an effect ofchanging the attribute value. Subsequently, the user can select a key onthe keyboard 115 to cause the re-display of the portion of the controlpanel 200 that was hidden from display. Subsequently, the user canselect the key on the keyboard 115 followed by another control, e.g.,control 225. In response, portions of the control panel 200 except forthe control 225 can be hidden from display. Subsequently, in response tothe selection of a key on the keyboard 115, the control panel 200 can bere-displayed.

In implementations where the control is displayed as a text field in thecontrol panel 200, in response to receiving input, e.g., from thekeyboard 115, all portions of the control panel 200 except the textfield can be hidden from display. The user can enter attribute valuesinto the text field. Subsequently, in response to receiving anotherinput, e.g., from the keyboard 115, the control panel 200 can bere-displayed. In implementations where the control 215 is displayed as acombination of component controls, e.g., a slider and a text field, ifthe slider is selected, the slider and the text field corresponding tocontrol 215 can be displayed when input is received, e.g., from thekeyboard 115, while other portions of the control panel 200 can behidden from display. The user can change the attribute either by usingthe slider or by using the text field or both. If the text field isselected, then the text field corresponding to control 215 can bedisplayed while the slider corresponding to control 215 and otherportions of the control panel 200 can be hidden from display. In someimplementations, more than one control panel can be displayed, whereeach control panel includes several controls. In response to receivinginput, e.g., from the keyboard 115, when a control on one control panelis selected, the control panel area corresponding to the panel with theselected control and that corresponding to all other displayed controlpanels can be hidden from display. Subsequent to the user changing theattribute value and providing an input, e.g., using the keyboard 115,all the control panels can be re-displayed. Subsequent to changing theattributes using the user interface controls 205-225 displayed in theuser interface control panel 200, the user can provide an input, e.g.,by selecting a key on the keyboard 115, to cause the user interfacecontrol panel 200 to be removed from display.

In some implementations, in response to a user selecting, e.g., the“Shift” key from the keyboard 115, the user interface control panel 200including one or more user interface controls can be displayed in theuser interface 125. When the user selects a user interface control byholding down the “Alt” key and using the mouse, portions of the controlpanel 200 that are not selected can be hidden from display. The hiddenportions of the control panel 200 can be re-displayed when the userreleases the “Alt” key. In other implementations, the second input canbe a keystroke where a user selects, e.g., the “Ctrl” key on thekeyboard 115 and then selects the user interface control using thecursor 135 without holding down the “Ctrl” key. Subsequent to changingthe attribute of the image 140, when the user selects the “Ctrl” key,the hidden portions of the control panel 200 can be re-displayed.Subsequently, in response to the user selecting the “Shift” key again,the control panel 200 can be hidden from display. Although “Shift,”“Ctrl,” and “Alt” keys are chosen in this implementation, other keysand/or key combinations can be selected to cause the display and hidingof all or portions of the user interface control panels 200.

FIGS. 3A-3D depict schematics of examples of a user interface 125including user interface control panels and user interface controls. Asillustrated in FIG. 3A, an image 140 stored in a storage device isdisplayed in the user interface 125. In response to receiving an inputfrom a user, e.g., a keystroke, a user interface control panel 300 isdisplayed at a location in the user interface 125. The control panel 300includes one or more user interface controls 305 that can be used tomodify the attributes of the image 140. A cursor 135, displayed on thedisplay device 105, can be used to select the control 305 to modify theattributes of the image 140. The control 305 can include a slidercorresponding to an attribute of the image 140 that can be modifiedusing the slider in the control 305. As the slider is modified, theattribute of the image 140 can be automatically updated to enablevisualizing an effect of changing the attribute on the image 140.Alternatively, or in addition, the control 305 can include a text fieldinto which values of attributes can be entered using a keyboard 115.

In some implementations, the user can hold a key on the keyboard 115 andselect the user interface control 305 in the control panel 300. Inresponse, as illustrated in FIG. 3B, only the area occupied by thecontrol 305 is displayed in the user interface 125 while portions of thecontrol panel 300 that are not selected are hidden from display. Thecontrol 305 can be configured to enable a user to change values of animage attribute and can include a slider including a button within thearea bounded by the slider. The user can change the position of thebutton using the cursor 135 to change the attributes of the image.

While portions of the control panel 300 except control 305 are hiddenfrom display, the user can move the cursor 135 to a location in the userinterface 125 away from the control 305, as illustrated in FIG. 3C. Whenthe user selects the location, e.g., by clicking the mouse, the control305 automatically moves from the present location of the control 305 tothe location that the user selected, as illustrated in FIG. 3D. When theuser releases the key that the user initially held to cause portions ofthe control panel 300 to be hidden, the hidden portions can bere-displayed in the user interface 125.

FIG. 4 is a flow diagram of an example of a process 400 for managinguser interface control panels. The process 400 displays a content itemin a user interface at 405. For example, the content item is an imagestored in a storage device which is operatively coupled to a processingunit of a computer system including a display device, e.g., LCD monitor,CRT monitor, and the like, and one or more input devices, e.g.,keyboard, mouse, stylus, and the like. The user interface is provided bya software application installed in the computer system. Uponinstallation, the software application is represented by an icondisplayed on the display device which, when selected using the inputdevice, causes the user interface to be displayed on the display device.

The process 400 displays a user interface control panel, comprising userinterface controls, in response to an input at 410. For example, theuser can access a storage device on which the content, e.g., an image,is stored, and cause the image to be displayed on the display device.The software application can include instructions that cause a key onthe keyboard to be configured to display a user interface control panelon the display device when selected. The user can select the key, and inresponse, the user interface control panel can be displayed in the userinterface. The control panel can be included in a control panel area,where all or portions of the control panel area lie over the areaoccupied by the image. The control panel area can further include acontrol area, where the control area includes one or more user interfacecontrols. The user interface controls can enable changing one or moreattributes of the image such as sharpness, brightness, contrast, hue,saturation, and the like.

The process 400 can detect a first selection at 415. For example, theuser interface control can be a slider with a button within the regionbounded by the slider, a text field, or a combination thereof. A firstselection can include a selection of the button in the slider, apositioning of a cursor in the text field to enter values, and the like.In some implementations, the first selection can be detected when a userselects a key on the keyboard and then selects the user interfacecontrol. For example, a first selection can be detected when the userholds down the “Ctrl” key on the keyboard and selects the button in theslider with the mouse. Alternatively, a first selection can be detectedwhen the user presses the “Alt” key on the keyboard once, releases the“Alt” key, and selects the button in the slider with the mouse.

In response to detecting the first selection, the process 400 displays aportion of the user interface control panel that includes the userinterface controls while hiding remaining portions of the control panelat 420. For example, the control panel area can include severalcontrols, e.g., sliders with buttons, where each control is bounded by acontrol area. In response to detecting the first selection, only thecontrol area corresponding to the selected control is displayed on thedisplay device while other portions of the control panel area are hiddenfrom display. Alternatively, or in addition, an appearance of theselected control can be altered to increase the visibility of thecontrol, e.g., by highlighting the control. Further, the appearance ofthe control area corresponding to the selected control can also bealtered, e.g., by highlighting, to improve the visibility of theselected control. The user can change the attributes of the image usingthe control. In some implementations, the highlighting can be based onthe attributes, e.g., color, brightness, sharpness, and the like, of thecontent item in the user interface. For example, if the content item isdisplayed as having a dark color, then the selected control and thecorresponding control area can be highlighted to have a brighter colorin contrast to the dark color of the content item.

The process 400 detects an end of the first selection at 425. Forexample, once the user has completed changing attributes of the imagethe user releases the mouse button. The end of the first selection isdetected when the user releases the mouse button and the key on thekeyboard that were used for the first selection.

Upon detecting the end of the first selection, the process 400re-displays the hidden portions of the control panel at 430. Forexample, in implementations where the user held down the “Ctrl” key onthe keyboard and used the mouse to cause portions of the control panelto be hidden from display, once the user releases the “Ctrl” key, thehidden portions are re-displayed.

The process 400 detects another input at 435. For example, the input canbe same as the input that initially caused the user interface controlpanel to be displayed, namely, the selection of the “Shift” key.

In response to detecting another input, the process 400 hides the userinterface control panel from display. For example, when the user pressesthe “Shift” key again, the control panel is hidden from display.

The first selection can be active between detecting the first selectionat 415 and detecting an end of the first selection at 425. In thisduration, the user can move the cursor from a location over the userinterface control to a new location in the user interface and select thenew location. In response to the selection of the new location, thedisplayed portions of the control panel can be automatically moved tothe new location. In some implementations, when the first selection isactive, all portions of the user interface except the image and the userinterface control can be hidden from display. In other implementations,a black screen can be displayed in the entire display device and theimage and the user interface control can be displayed over the blackscreen. As the user changes the attribute values of the image using thecontrol, the image can be automatically updated to enable the user tovisualize an effect of changing the attribute values. Displaying onlythe image and the control over a black screen can reduce distractionsallowing a user to focus only changes to the image.

FIGS. 5A-5D depicts schematics of examples of user interfaces displayinguser interface control panels at cursor locations. As illustrated inFIG. 5A, a user interface 125 including an image 140 and a cursor 135are displayed on a display device 105. The user interface 125 can occupyall or a portion of the area of the display device 105. The cursor 135is controlled by a pointing device, e.g., a mouse. A user can move thecursor to any location on the display device 125. As illustrated in FIG.5B, when a user moves the cursor 135 to a location in the user interface125 and selects the location, a user interface control panel 500including one or more user interface controls 505 is displayed at thelocation of the mouse. For example, each user interface control 500 isdisplayed in a rectangular area and each rectangular area is positionedadjacent to each other to form a row of user interface controls 505. Thefirst user interface control 505 is displayed at the location of thecursor 135. Each user interface control 505 is represented by a symbol,e.g., “+” sign, and is configured to perform one or more operations,e.g., changing one or more attributes of the image 140. As illustratedin FIG. 5C, the user moves the cursor 135 to the desired user interfacecontrol 505 using the pointing device and selects the control 505. Inresponse, the operation that the selected user interface control 505 isconfigured to perform, can be performed. As illustrated in FIG. 5D, oncethe user selects the desired user interface control 505, the userinterface control panel 500 is automatically hidden from display.

In some implementations, selecting a user interface control 505 cancause an additional user interface control panel to be displayed. Theadditional user interface control panel can be related to the selecteduser interface control and include additional controls to performoperations. In such implementations, portions of the user interfacecontrol panel that were not selected can be automatically hidden oncethe user selects a user interface control. Further, once the userselects one of the additional controls and performs an operation, theadditional controls can be hidden from display.

Implementations of the subject matter and the functional operationsdescribed in this specification can be implemented in digital electroniccircuitry, or in computer software, firmware, or hardware, including thestructures disclosed in this specification and their structuralequivalents, or in combinations of one or more of them. Implementationsof the subject matter described in this specification can be implementedas one or more computer program products, i.e., one or more modules ofcomputer program instructions encoded on a computer-readable medium forexecution by, or to control the operation of, data processing apparatus.The computer-readable medium can be a machine-readable storage device, amachine-readable storage substrate, a memory device, a composition ofmatter effecting a machine-readable propagated signal, or a combinationof one or more of them. The term “data processing apparatus” encompassesall apparatus, devices, and machines for processing data, including byway of example a programmable processor, a computer, or multipleprocessors or computers. The apparatus can include, in addition tohardware, code that creates an execution environment for the computerprogram in question, e.g., code that constitutes processor firmware, aprotocol stack, a database management system, an operating system, or acombination of one or more of them. A propagated signal is anartificially generated signal, e.g., a machine-generated electrical,optical, or electromagnetic signal, that is generated to encodeinformation for transmission to suitable receiver apparatus.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, and it can bedeployed in any form, including as a stand-alone program or as a module,component, subroutine, or other unit suitable for use in a computingenvironment. A computer program does not necessarily correspond to afile in a file system. A program can be stored in a portion of a filethat holds other programs or data (e.g., one or more scripts stored in amarkup language document), in a single file dedicated to the program inquestion, or in multiple coordinated files (e.g., files that store oneor more modules, sub-programs, or portions of code). A computer programcan be deployed to be executed on one computer or on multiple computersthat are located at one site or distributed across multiple sites andinterconnected by a communication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for performing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto-optical disks, or optical disks. However, a computerneed not have such devices. Moreover, a computer can be embedded inanother device, e.g., a mobile telephone, a personal digital assistant(PDA), a mobile audio player, a Global Positioning System (GPS)receiver, to name just a few. Computer-readable media suitable forstoring computer program instructions and data include all forms ofnon-volatile memory, media and memory devices, including by way ofexample semiconductor memory devices, e.g., EPROM, EEPROM, and flashmemory devices; magnetic disks, e.g., internal hard disks or removabledisks; magneto-optical disks; and CD-ROM and DVD-ROM disks. Theprocessor and the memory can be supplemented by, or incorporated in,special purpose logic circuitry.

To provide for interaction with a user, implementations of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech,tactile or near-tactile input.

Implementations of the subject matter described in this specificationcan be implemented in a computing system that includes a back-endcomponent, e.g., as a data server, or that includes a middlewarecomponent, e.g., an application server, or that includes a front-endcomponent, e.g., a client computer having a graphical user interface ora Web browser through which a user can interact with an implementationof the subject matter described is this specification, or anycombination of one or more such back-end, middleware, or front-endcomponents. The components of the system can be interconnected by anyform or medium of digital data communication, e.g., a communicationnetwork. Examples of communication networks include a local area network(“LAN”) and a wide area network (“WAN”), e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.\

While this specification contains many specifics, these should not beconstrued as limitations on the scope of the disclosure or of what maybe claimed, but rather as descriptions of features specific toparticular implementations of the disclosure. Certain features that aredescribed in this specification in the context of separateimplementations can also be implemented in combination in a singleimplementation. Conversely, various features that are described in thecontext of a single implementation can also be implemented in multipleimplementations separately or in any suitable subcombination. Moreover,although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular implementations have been described. Otherimplementations are within the scope of the following claims. Forexample, the actions recited in the claims can be performed in adifferent order and still achieve desirable results. In someimplementations, the location for displaying the user interface controlpanel can be chosen based on a color at a location of the image. Forexample, the default color for representing the user interface controlpanel can be predominantly light. The image can include light and darkcolored regions. The user interface control panel can be displayed overa dark region to enhance visibility of the user interface control panel.In other implementations, the location of the user interface controlpanel can be fixed. The controls and other portions of the control panelcan be changed based on the location where the control panel isdisplayed. For example, if the control panel is displayed over a lightcolored region, then the control panel can be displayed in a dark color,and vice versa.

In some implementations, the images and the user interface can be storedat a remote location, e.g., a server. The server can be operativelycoupled to the processing unit through one or more wired or wirelessnetworks, e.g., the Internet, Wi-Fi networks, and the like. For example,a user can access the server through the Internet by entering a uniformresource identifier (URI), that points to the server, in a web browser.The user can upload content, including images, for storage on theserver, where each item of content can be assigned a corresponding URI.The user can enter the URI of an image in the web browser to view theimage stored on the server. The server can be configured to present theuser interface in the web browser to enable viewing images. In addition,the server can include the user interface control panel including theuser interface controls to edit images, e.g., change image attributes.The user can remotely access the user interface controls and performoperations on the images stored in the server.

In some implementations, the location of the control panel can be fixedsuch that the control panel is displayed at the same location in theuser interface 125 every time. In other implementations, the location ofthe control panel can be changed by a user before being hidden fromdisplay. Subsequently, the control panel area can be displayed at theprevious location where the control panel was moved. Although images areused as examples of content items that can be displayed in the userinterface and edited using the user interface controls, content items ofany type, e.g., video files, audio files, documents, and the like, canbe edited by the operations described in this disclosure.

What is claimed is:
 1. A computer-implemented method comprising:displaying a user interface on a display device, the user interfacedisplaying a content item; in response to receiving input, displaying afirst user interface control panel including a first user interfacecontrol, the first user interface control configured to enable modifyingone or more attributes of the content item; and in response to detectinga first selection of the first user interface control: hiding at least aportion of the first user interface control panel, and displaying asecond user interface control panel including a second user interfacecontrol, the second user interface control configured to enable anoperation related to the first user interface control.
 2. The method ofclaim 1, comprising detecting a location of a cursor on the displaydevice; and in response to receiving the input, displaying the firstuser interface control panel at the location of the cursor.
 3. Themethod of claim 1, comprising, in response to detecting a firstselection of the second user interface control, hiding the second userinterface control panel.
 4. The method of claim 1, wherein the firstselection is active between detecting the first selection and detectingan end of the first selection.
 5. The method of claim 1, wherein inputcomprises selection of a key on a keyboard.
 6. The method of claim 1,wherein the first selection comprises selection of the user interfacecontrol using a cursor controlled by a pointing device.
 7. Anon-transitory computer-readable medium storing instructions to cause adata processing apparatus to perform operations comprising: displaying auser interface on a display device, the user interface displaying acontent item; in response to receiving input, displaying a first userinterface control panel including a first user interface control, thefirst user interface control configured to enable modifying one or moreattributes of the content item; and in response to detecting a firstselection of the first user interface control: hiding at least a portionof the first user interface control panel, and displaying a second userinterface control panel including a second user interface control, thesecond user interface control configured to enable an operation relatedto the first user interface control.
 8. The non-transitorycomputer-readable medium of claim 7, the operations comprising detectinga location of a cursor on the display device; and in response toreceiving the input, displaying the first user interface control panelat the location of the cursor.
 9. The non-transitory computer-readablemedium of claim 7, the operations comprising, in response to detecting afirst selection of the second user interface control, hiding the seconduser interface control panel.
 10. The non-transitory computer-readablemedium of claim 7, wherein the first selection is active betweendetecting the first selection and detecting an end of the firstselection.
 11. The non-transitory computer-readable medium of claim 7,wherein input comprises selection of a key on a keyboard.
 12. Thenon-transitory computer-readable medium of claim 7, wherein the firstselection comprises selection of the user interface control using acursor controlled by a pointing device.
 13. A system comprising: aprocessor; and a computer-readable medium encoding instructions to causethe processor to perform operations comprising: displaying a userinterface on a display device, the user interface displaying a contentitem; in response to receiving input, displaying a first user interfacecontrol panel including a first user interface control, the first userinterface control configured to enable modifying one or more attributesof the content item; and in response to detecting a first selection ofthe first user interface control: hiding at least a portion of the firstuser interface control panel, and displaying a second user interfacecontrol panel including a second user interface control, the second userinterface control configured to enable an operation related to the firstuser interface control.
 14. The system of claim 13, the operationscomprising detecting a location of a cursor on the display device; andin response to receiving the input, displaying the first user interfacecontrol panel at the location of the cursor.
 15. The system of claim 13,the operations comprising, in response to detecting a first selection ofthe second user interface control, hiding the second user interfacecontrol panel.
 16. The system of claim 13, wherein the first selectionis active between detecting the first selection and detecting an end ofthe first selection.
 17. The system of claim 13, wherein input comprisesselection of a key on a keyboard.
 18. The system of claim 13, whereinthe first selection comprises selection of the user interface controlusing a cursor controlled by a pointing device.